package com.haier.cloudremote.protocal;

import java.nio.ByteBuffer;

public class PackageOperation {

	
	/**
	 * 用户选择是否开机启动
	 * @param switchCode 是否开机启动，（1Or 0）
	 * @return
	 */
	public static ByteBuffer setPackgeDataformSetBootupSwitch(int switchCode){
		ByteBuffer byteMsg = ByteBuffer.allocate(4);
		byte [] byteSSCKeyV=new byte[4];
		byteSSCKeyV=ConnectManager.intToByte(switchCode);
		byteMsg.put(byteSSCKeyV);
		return byteMsg;
	}
	
	/**
	 * 设置 用户选择STB 通道
	 * @param stbNum 通道序号
	 * @return
	 */
	public static ByteBuffer setPackgeDataformSetSTBChannel(int stbNum){
		ByteBuffer byteMsg = ByteBuffer.allocate(4);
		byte [] byteSSCKeyV=new byte[4];
		byteSSCKeyV=ConnectManager.intToByte(stbNum);
		byteMsg.put(byteSSCKeyV);
		return byteMsg;
	}
	
	/**
	 * 获取 SSC 状态值
	 * @param type 1. 获取学习进度 2. 获取所选通道 3.获取是否开机启动
	 * @return
	 */
	public static ByteBuffer setPackgeDataformGetState(int type){
		ByteBuffer byteMsg = ByteBuffer.allocate(4);
		byte [] byteSSCKeyV=new byte[4];
		byteSSCKeyV=ConnectManager.intToByte(type);
		byteMsg.put(byteSSCKeyV);
		return byteMsg;
	}
	
	/**
	 * 遥控器学习
	 * @param type  类型
	 * 		0x00 开始学习
	 * 		0x01 该消息是提示用户需要按键的键值
	 * 		0xFF 结束学习
	 * @param keyV  键值
	 * 		CAE 定义的键值：（如果类型为 0x01 有效，如果为其他则此值不处理）
	 * @return
	 */
	public static ByteBuffer setPackgeDataformSSCStudy(byte type,byte[] keyV)
	{
		System.out.println("type=="+type+" keyV[0]=="+keyV[0]);
		ByteBuffer byteMsg = ByteBuffer.allocate(22);
		byte []bytetype=new byte[1];	
		byte []bytekeyV=new byte[1];
		byte []retain=new byte[20];
		ByteBuffer byteRetainBuffer=ByteBuffer.allocate(20);
		for(int i=0;i<20;i++)
		{
			retain[i]=0x00;
		}
		byteRetainBuffer.put(retain);
		bytetype[0]=type;
//		bytekeyV[0]=keyV;
//		byteMsg.put(bytetype);
		byteMsg.put(type);
		byteMsg.put(keyV[0]);
		byteMsg.put(byteRetainBuffer.array());
		return byteMsg;
	}
	

	/**
	 * 向CAE 请求该地区机顶盒列表
	 * @param iCountry   国家代码
	 * @param iProvince  省代码
	 * @param iCity      城市代码
	 * @param iCounty    区/县代码
	 * @param strTVModel 电视型号
	 * @return
	 */
	public static ByteBuffer setPackgeDataformRequestSTlist(int iCountry,int iProvince,int iCity,int iCounty,
			String strTVModel)
	{
		ByteBuffer byteMsg = ByteBuffer.allocate(46);
		byte []bytecountry=new byte[4];
		byte []byteprovince=new byte[4];
		byte []bytecity=new byte[4];
		byte []bytecounty=new byte[4];
		byte []bytetvmodel=new byte[20];
		ByteBuffer bytetvmodelBuffer=ByteBuffer.allocate(20);
		byte []retain=new byte[10];
		for(int i=0;i<10;i++)
		{
			retain[i]=0x00;
		}
		ByteBuffer byteretainBuffer=ByteBuffer.allocate(10);
		byteretainBuffer.put(retain);	
		bytecountry=ConnectManager.intToByte(iCountry);
		byteMsg.put(bytecountry);
		byteprovince=ConnectManager.intToByte(iProvince);
		byteMsg.put(byteprovince);
		bytecity=ConnectManager.intToByte(iCity);
		byteMsg.put(bytecity);
		bytecounty=ConnectManager.intToByte(iCounty);
		byteMsg.put(bytecounty);
		bytetvmodel=strTVModel.trim().getBytes();
		bytetvmodelBuffer.put(bytetvmodel);
		byteMsg.put(bytetvmodelBuffer.array());
		byteMsg.put(byteretainBuffer.array());
		return byteMsg;
	}
	
	
	/**
	 * 用户选择的所用的机顶盒
	 * @param STBType  机顶盒类型
	 * @return
	 */
	public static ByteBuffer setPackgeDataformSelectSTB(int STBType)
	{
		ByteBuffer byteMsg = ByteBuffer.allocate(24);
		byte []byteSTBType=new byte[4];
//		ByteBuffer byteMacBuffer=ByteBuffer.allocate(4);
		byte []byteretain=new byte[20];
		ByteBuffer byteretainBuffer=ByteBuffer.allocate(20);
		for(int i=0;i<20;i++)
		{
			byteretain[i]=0x00;
		}
		byteSTBType=ConnectManager.intToByte(STBType);
		byteretainBuffer.put(byteretain);
		byteMsg.put(byteSTBType);
		byteMsg.put(byteretainBuffer.array());
		return byteMsg;
	}
	
	/**
	 * 上传该地区机顶盒列表
	 * @param iCountry   国家代码
	 * @param iProvince  省代码
	 * @param iCity      城市代码
	 * @param iCounty    区/县代码
	 * @param strTVModel TV型号
	 * @return
	 */
	public static ByteBuffer setPackgeDataformSTBlistToCould(int iCountry,int iProvince,int iCity,int iCounty,
			byte isShare, String strTVModel)
	{
		ByteBuffer byteMsg = ByteBuffer.allocate(117);
		byte []bytecountry=new byte[4];
		byte []byteprovince=new byte[4];
		byte []bytecity=new byte[4];
		byte []bytecounty=new byte[4];
		byte []bytetvmodel=new byte[100];
		ByteBuffer byteTvmodel = ByteBuffer.allocate(100);
		bytecountry=ConnectManager.intToByte(iCountry);
		byteprovince=ConnectManager.intToByte(iProvince);
		bytecity=ConnectManager.intToByte(iCity);
		bytecounty=ConnectManager.intToByte(iCounty);
		bytetvmodel=strTVModel.trim().getBytes();
		byteTvmodel.put(bytetvmodel);
		byteMsg.put(bytecountry);
		byteMsg.put(byteprovince);
		byteMsg.put(bytecity);
		byteMsg.put(bytecounty);
		byte [] byteShare = new byte[1];
		byteShare[0] = isShare;
		byteMsg.put(byteShare);
		byteMsg.put(byteTvmodel.array());
		return byteMsg;
	}
	
	/**
	 * 电视遥控器 按键 对应的 SSC 键值 
	 * @param SSCkeyV  SSC键值
	 * @return
	 */
	public static ByteBuffer setPackgeDataformTVKey_SSCKeyV(int SSCkeyV)
	{
		ByteBuffer byteMsg = ByteBuffer.allocate(4);
		byte []byteSSCKeyV=new byte[4];
		byteSSCKeyV=ConnectManager.intToByte(SSCkeyV);
		byteMsg.put(byteSSCKeyV);
		return byteMsg;
	}
	
	/**
	 * 一键匹配模式控制
	 * @param keyV  键值
	 * @return
	 */
	public static ByteBuffer setPackgeDataformOneKeyModel(String keyV)
	{
		ByteBuffer byteMsg = ByteBuffer.allocate(21);
		byte []bytekeyV=new byte[1];
		byte []byteretain=new byte[20];
		ByteBuffer byteRetain = ByteBuffer.allocate(20);
		for(int i=0;i<20;i++)
		{
			byteretain[i]=0x00;
		}
		byteRetain.put(byteretain);
		
		byteMsg.put(bytekeyV);
		byteMsg.put(byteRetain.array());
		return byteMsg;
	}

	/**
	 * Debug 开关
	 * @param debug 0 关闭，1打开
	 * @return
	 */
	public static ByteBuffer setPackgeDataformswitchOfDebug(int debug) {
		// TODO Auto-generated method stub
		ByteBuffer byteMsg = ByteBuffer.allocate(4);
		byte []byteSSCKeyV = new byte[4];
		byteSSCKeyV = ConnectManager.intToByte(debug);
		byteMsg.put(byteSSCKeyV);
		return byteMsg;
	}

	/**
	 * 获取SSC 文件 存放路径
	 * @param fileType 0 ：获取 Log路径
	 * 				1 ：获取键值表存放路径
	 * @return
	 */
	public static ByteBuffer setPackgeDataformGetFilePath(int fileType) {
		// TODO Auto-generated method stub
		ByteBuffer byteMsg = ByteBuffer.allocate(4);
		byte []byteSSCKeyV = new byte[4];
		byteSSCKeyV = ConnectManager.intToByte(fileType);
		byteMsg.put(byteSSCKeyV);
		return byteMsg;
	}

	/**
	 * 电视遥控器按键转发（测试STB 接口）
	 * @param keyCode 电视遥控器键值 对应的SSC 键值
	 * @return
	 */
	public static ByteBuffer setPackgeDataformTestSTB(int keyCode) {
		// TODO Auto-generated method stub
		ByteBuffer byteMsg = ByteBuffer.allocate(4);
		byte []byteSSCKeyV = new byte[4];
		byteSSCKeyV = ConnectManager.intToByte(keyCode);
		byteMsg.put(byteSSCKeyV);
		return byteMsg;
	}

	public static ByteBuffer setPackgeDataformDispatchKey(int keyCode) {
        // TODO Auto-generated method stub
        ByteBuffer byteMsg = ByteBuffer.allocate(4);
        byte []byteSSCKeyV = new byte[4];
        byteSSCKeyV = ConnectManager.intToByte(keyCode);
        byteMsg.put(byteSSCKeyV);
        return byteMsg;
    }
	
}

